--给人物的专属能力值添加类似右上角血量的图标显示
--需要两个文件：1.widget的定义文件  2.modmain文件
--以我自己的mod为例子，定义文件位于widgets/nana_power_badge.lua



--以下内容为modmain
local NANA_POWER_BADGE = require("widgets/nana_power_badge")
AddClassPostConstruct("widgets/statusdisplays", function(self, owner)
    if owner and owner:HasTag("esctemplate") then
        self.NANA_POWER_BADGE = self:AddChild(NANA_POWER_BADGE(owner)) -- 相似的写法，将NANA_POWER_WIDGET又当成子项给添加进widgets/controls里面
        self.NANA_POWER_BADGE:SetPosition(-120, 20, 0)                 -- 设置widget的位置，上面通过 SetHAnchor，SetVAnchor两个函数设置了大致位置，这里的坐标原点就是以这两个函数设置的方向为基础计算的，左减右加，上加下减
        self.NANA_POWER_BADGE:Show()
    end
end)






--以下是widget的定义文件内容
local Badge = require "widgets/badge" -- 导入基础的Badge类，
local Image = require "widgets/image" -- 导入Image组件
local Text = require "widgets/text" -- 导入Text组件


--定义我们自己的类，继承自Badge类
local NANA_POWER_BADGE = Class(Badge, function(self, owner)
    Badge._ctor(self, nil, owner, { 205 / 255, 51 / 255, 51 / 255, 1 }, 'status_power', true, nil, true)


    self.num = self:AddChild(Text(BODYTEXTFONT, 33))  -- 创建文本对象，字体大小33
    self.num:SetPosition(0, 0, 0)  -- 设置数字相对于图标的位置
    self.num:Show() 


    self.circleframe:GetAnimState():OverrideSymbol("frame_circle",'status_power','frame_circle')


    self.OnUpdate = function(inst)
        --if self.owner.components.nana_power then
            local current = self.owner.nana_power:value() or 0
            local max = self.owner.nana_power_max:value() or 0
            self.num:SetString(current)

            local percent = math.clamp(current / max, 0, 1)
            --self.circular_meter:GetAnimState():SetPercent("anim", 1 - percent)
            self.circular_meter:GetAnimState():SetPercent("meter", percent)
            self.circleframe:GetAnimState():SetPercent("frame", 1 - percent)
        --end
    end
    self:StartUpdating()
end)

return NANA_POWER_BADGE







